iT邦幫忙

2025 iThome 鐵人賽

DAY 8
0

前幾天有提到過,在沒有 #context 的情況下,Typst 定義的函數都需要是純函數。這是因為快取的效率考量,如果沒有任何的 side-effect,那麼傳入相同參數時,該函數的計算結果就可以快取起來,不需要重複計算兩次。

如果需要修改到已經定義好的東西,例如我希望呼叫某個函數以後,一個外部的變數的值就會跟著修改。那麼在這種情況下,可以使用 #state 來修改狀態。

https://ithelp.ithome.com.tw/upload/images/20250822/201123762VYWUqaXG9.png

這樣顯示出來的結果就是

https://ithelp.ithome.com.tw/upload/images/20250822/20112376XZ7eedv78s.png

如果我們要使用 for loop,那麼 state 裡面的 update 要改成函數的樣子,才能確保更新。
https://ithelp.ithome.com.tw/upload/images/20250822/20112376ffcaDN55Xb.png

https://ithelp.ithome.com.tw/upload/images/20250822/201123764JNZyy8LUv.png


上一篇
Day 7: 使用 read 載入檔案
下一篇
Day 9: 使用 Stack 對齊文字區塊
系列文
Typst 與 CeTZ:對演算法與程式設計超友好的排版製圖工具19
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言